import router from "./index.ts";
import useUserStore from "@/stores/modules/user.ts";
import pinia from "@/stores/index.ts";
const userStore = useUserStore(pinia);

//用户未登录:可以访问login,其余六个路由不能访问(指向login)
//用户登录成功:不可以访问login[指向首页],其余的路由可以访问
router.beforeEach(async (to, _form, next) => {
  // 有 token 说明登录成功
  if (localStorage.getItem("TOKEN")) {
    // 已经登录，不想退出直接通过 url 访问登录页面时
    if (to.path === "/login") {
      next({ path: "/" });
    } else {
      // 有用户名，直通车
      if (userStore.userName) {
        next();
      } else {
        // pinia 非持久化， 当用户刷新时数据丢失， 所以当用户没数据时再次发送请求
        try {
          await userStore.userInfo();
          // 有异步路由的时候
          next({ ...to });
        } catch (error) {
          //token过期:获取不到用户信息了
          //用户手动修改本地存储token
          //退出登录->用户相关的数据清空
          await userStore.loginOut();
          next({ path: "/login", query: { redirect: to.path } });
        }
      }
    }
  }
  // token 过期时， 无 token 未登录时
  else {
    if (to.path === "/login") {
      console.log(to.path);

      next();
    } else {
      console.log(to.path);
      next();

      // next({ path: "/login", query: { redirect: to.path } });
    }
  }
});
